﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using ot;
using System.Data.SqlClient;
using System.Data;

/// <summary>
/// Descripción breve de CConsultaRemito
/// </summary>

namespace consultasSql
{
    public class CConsultaRemito
    {
        /*UPDATE*/
        public bool update(CRemito objeto)
        {
            bool bandera = false;

            /*obtener id desde otcab*/
            string consulta = "UPDATE RemitoCab SET FechaRem = @FechaRem, Domicilio = @Domicilio, CP = @CP, Pcia = @Pcia, IVA = @IVA, CUIT = @CUIT, DomTractor = @DomTractor, Chofer = @Chofer, DNIChofer = @DNIChofer, EmailImprime = @EmailImprime WHERE Id = @Id";


            using (SqlConnection objConexion = new SqlConnection(CCadenaConexionSql.cadConexion()))
            {
                using (SqlCommand command = new SqlCommand())
                {
                    if (objConexion.State == ConnectionState.Closed)
                    { objConexion.Open(); }

                    command.CommandType = CommandType.Text;
                    command.CommandText = consulta;

                    command.Parameters.Clear();


                    command.Parameters.AddWithValue("@id", objeto.Id);

                    if (!String.IsNullOrEmpty(objeto.FechaRem))
                    {
                        command.Parameters.Add(new SqlParameter("@FechaRem", SqlDbType.DateTime));
                        command.Parameters["@FechaRem"].Value = objeto.FechaRem;
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@FechaRem", DBNull.Value); //envio valor null
                    }

                    command.Parameters.AddWithValue("@Domicilio", objeto.Domicilio);
                    command.Parameters.AddWithValue("@CP", objeto.CP);
                    command.Parameters.AddWithValue("@Pcia", objeto.Pcia);
                    command.Parameters.AddWithValue("@IVA", objeto.IVA);
                    command.Parameters.AddWithValue("@CUIT", objeto.CUIT);
                    command.Parameters.AddWithValue("@DomTractor", objeto.DomTractor);
                    command.Parameters.AddWithValue("@Chofer", objeto.Chofer);


                    if (!String.IsNullOrEmpty(objeto.DNIChofer))
                    {
                        command.Parameters.Add(new SqlParameter("@DNIChofer", SqlDbType.Int));
                        command.Parameters["@DNIChofer"].Value = Convert.ToInt32(objeto.DNIChofer);
                    }
                    else
                    {
                        command.Parameters.AddWithValue("@DNIChofer", DBNull.Value);
                    }

                    command.Parameters.AddWithValue("@EmailImprime", objeto.EmailImprime);


                    command.Connection = objConexion;

                    try
                    {
                        command.ExecuteNonQuery();
                        bandera = true;
                    }
                    catch
                    {
                        bandera = false;
                    }

                    if (objConexion.State == ConnectionState.Open)
                    { objConexion.Close(); }


                    updateSecc(objeto.darListaCable(), objeto.Id);

                }
            }

            if (updateEstado(objeto.IdOtCab))
                bandera = true;
            else
                bandera = false;

            return bandera;
        }


        //guardo el estado en que se encuentra la orden
        private bool updateEstado(int IdOtCab)
        {
            CEstadoOt estado = new CEstadoOt();

            estado.IdOtCab = IdOtCab;
            estado.RemitoGenerado = true;

            return new CConsultaEstadoOt().update(estado);
        }


        /*insertObjeto_Accesorios RemitoCable*/
        public bool updateSecc(List<Int32> IdSeccCable, int idRemito)
        {
            try
            {
                foreach (Int32 idSecc in IdSeccCable)
                {
                    actualizarCampos(idSecc, idRemito);
                }
                return true;
            }
            catch { }

            return false;

        }


        private bool actualizarCampos(Int32 IdSeccCable, int IdRemito)
        {
            bool bandera;

            string consulta = "IF NOT EXISTS(SELECT * FROM RemitoCable WHERE IdRemito = @IdRemito AND IdSeccCable = @IdSeccCable) BEGIN INSERT INTO RemitoCable (IdRemito, IdSeccCable) VALUES (@IdRemito, @IdSeccCable) END";


            using (SqlConnection objConexion = new SqlConnection(CCadenaConexionSql.cadConexion()))
            {
                using (SqlCommand command = new SqlCommand())
                {
                    if (objConexion.State == ConnectionState.Closed)
                    { objConexion.Open(); }

                    command.Connection = objConexion;

                    command.CommandType = CommandType.Text;
                    command.CommandText = consulta;

                    command.Parameters.Clear();

                    command.Parameters.AddWithValue("@IdRemito", IdRemito);

                    command.Parameters.AddWithValue("@IdSeccCable", IdSeccCable);

                    try
                    {
                        command.ExecuteNonQuery();
                        bandera = true;
                    }
                    catch
                    {
                        bandera = false;
                    }

                    if (objConexion.State == ConnectionState.Open)
                    { objConexion.Close(); }

                    return bandera;

                }
            }
        }

    }
}